import { createApp } from 'vue';

import App from './App.vue';
import { setupStore } from '~/store';
import router, { setupRouter } from '~/router';
import { setupRouterGuard } from '~/router/guard';

/**
 * 导入element-plus消息框的样式
 */
import 'element-plus/theme-chalk/el-message.css';

/**
 * 导入tailwindcss样式
 */
import './styles/tailwind.css';

/**
 * 导入项目自定义样式
 */
import './styles/index.scss';
import { isDev } from '~/common';
import { setupI18n } from '~/lang';

/**
 * 前端开发环境才需要导入mock文件
 */
if (isDev) {
  import('../mock/index.ts');
}

/**
 * 自定义启动方法
 */
async function bootstrap() {
  const app = createApp(App);

  // 配置store
  setupStore(app);

  // 配置路由
  await setupRouter(app);

  // 配置路由守卫
  setupRouterGuard(router);

  // 国际化
  setupI18n(app);

  app.mount('#app');
}

bootstrap().catch(error => {
  console.error(error);
});
